// Copyright (c) 2010-2014 SharpDX - Alexandre Mutel
// 
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// 
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
// 
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.

//------------------------------------------------------------------------------
// <auto-generated>
//     Types declaration for SharpDX.DirectSound namespace.
//     This code was generated by a tool.
//     Date : 28/03/2015 21:51:16
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.InteropServices;
using System.Security;
namespace SharpDX.DirectSound {

#pragma warning disable 419
#pragma warning disable 1587
#pragma warning disable 1574

        /// <summary>	
        /// Functions	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='SharpDX.DirectSound.CaptureEffectGuid']/*"/>	
    static  partial class CaptureEffectGuid {   
        
        /// <summary>Constant AcousticEchoCancellationCaptureEffect.</summary>
        /// <unmanaged>GUID_DSCFX_CLASS_AEC</unmanaged>
        public static readonly System.Guid AcousticEchoCancellationCaptureEffect = new System.Guid("bf963d80-c559-11d0-8a2b-00a0c9255ac1");
        
        /// <summary>Constant MicrosoftAcousticEchoCancellationCaptureEffect.</summary>
        /// <unmanaged>GUID_DSCFX_MS_AEC</unmanaged>
        public static readonly System.Guid MicrosoftAcousticEchoCancellationCaptureEffect = new System.Guid("cdebb919-379a-488a-8765-f53cfd36de40");
        
        /// <summary>Constant SystemAcousticEchoCancellationCaptureEffect.</summary>
        /// <unmanaged>GUID_DSCFX_SYSTEM_AEC</unmanaged>
        public static readonly System.Guid SystemAcousticEchoCancellationCaptureEffect = new System.Guid("1c22c56d-9879-4f5b-a389-27996ddc2810");
        
        /// <summary>Constant NoiseSuppressionCaptureEffect.</summary>
        /// <unmanaged>GUID_DSCFX_CLASS_NS</unmanaged>
        public static readonly System.Guid NoiseSuppressionCaptureEffect = new System.Guid("e07f903f-62fd-4e60-8cdd-dea7236665b5");
        
        /// <summary>Constant MicrosoftNoiseSuppressionCaptureEffect.</summary>
        /// <unmanaged>GUID_DSCFX_MS_NS</unmanaged>
        public static readonly System.Guid MicrosoftNoiseSuppressionCaptureEffect = new System.Guid("11c5c73b-66e9-4ba1-a0ba-e814c6eed92d");
        
        /// <summary>Constant SystemNoiseSuppressionCaptureEffect.</summary>
        /// <unmanaged>GUID_DSCFX_SYSTEM_NS</unmanaged>
        public static readonly System.Guid SystemNoiseSuppressionCaptureEffect = new System.Guid("5ab0882e-7274-4516-877d-4eee99ba4fd0");
    }
        /// <summary>	
        /// Functions	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='SharpDX.DirectSound.DirectSound3DAlgorithmGuid']/*"/>	
    static  partial class DirectSound3DAlgorithmGuid {   
        
        /// <summary>Constant FullHrt3DAlgorithm.</summary>
        /// <unmanaged>DS3DALG_HRTF_FULL</unmanaged>
        public static readonly System.Guid FullHrt3DAlgorithm = new System.Guid("c2413340-1c1b-11d2-94f5-00c04fc28aca");
        
        /// <summary>Constant LightHrt3DAlgorithm.</summary>
        /// <unmanaged>DS3DALG_HRTF_LIGHT</unmanaged>
        public static readonly System.Guid LightHrt3DAlgorithm = new System.Guid("c2413342-1c1b-11d2-94f5-00c04fc28aca");
        
        /// <summary>Constant NoVirtualization3DAlgorithm.</summary>
        /// <unmanaged>DS3DALG_NO_VIRTUALIZATION</unmanaged>
        public static readonly System.Guid NoVirtualization3DAlgorithm = new System.Guid("c241333f-1c1b-11d2-94f5-00c04fc28aca");
    }
        /// <summary>	
        /// Functions	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='SharpDX.DirectSound.DSound']/*"/>	
    static  partial class DSound {   
        
        /// <summary>Constant AllObjects.</summary>
        /// <unmanaged>GUID_All_Objects</unmanaged>
        public static readonly System.Guid AllObjects = new System.Guid("aa114de5-c262-4169-a1c8-23d698cc73b5");
        
        /// <summary>	
        /// The DirectSoundCaptureCreate8 function creates and initializes an object that supports the IDirectSoundCapture8 interface. Although the older<strong>DirectSoundCaptureCreate</strong>function can also be used to obtain theIDirectSoundCapture8interface, the object created by that function cannot be used to create capture buffers that support theIDirectSoundCaptureBuffer8interface.	
        /// </summary>	
        /// <param name="cGuidDeviceRef">No documentation.</param>	
        /// <param name="dSC8Out">No documentation.</param>	
        /// <param name="unkOuterRef">No documentation.</param>	
        /// <returns><p>If the function succeeds, it returns DS_OK. If it fails, the return value may be one of the following values.</p> <table> <tr><th>Return Code</th></tr> <tr><td>DSERR_ALLOCATED</td></tr> <tr><td>DSERR_INVALIDPARAM</td></tr> <tr><td>DSERR_NOAGGREGATION</td></tr> <tr><td>DSERR_OUTOFMEMORY</td></tr> </table></returns>	
        /// <remarks>	
        /// <p>On sound cards that do not support full duplex, this method will fail and return DSERR_ALLOCATED.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DirectSoundCaptureCreate8']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.directsoundcapturecreate8</msdn-id>	
        /// <unmanaged>HRESULT DirectSoundCaptureCreate8([In, Optional] const GUID* pcGuidDevice,[Out, Fast] IDirectSoundCapture** ppDSC8,[In] IUnknown* pUnkOuter)</unmanaged>	
        /// <unmanaged-short>DirectSoundCaptureCreate8</unmanaged-short>	
        public static void CaptureCreate8(System.Guid? cGuidDeviceRef, SharpDX.DirectSound.DirectSoundCapture dSC8Out, SharpDX.ComObject unkOuterRef) {
            unsafe {
                System.Guid cGuidDeviceRef_;
                if (cGuidDeviceRef.HasValue)
                    cGuidDeviceRef_ = cGuidDeviceRef.Value;				
                IntPtr dSC8Out_ = IntPtr.Zero;
                SharpDX.Result __result__;
                __result__= 
				DirectSoundCaptureCreate8_((cGuidDeviceRef.HasValue)?&cGuidDeviceRef_:(void*)IntPtr.Zero, &dSC8Out_, (void*)((unkOuterRef == null)?IntPtr.Zero:unkOuterRef.NativePointer));		
                ((SharpDX.DirectSound.DirectSoundCapture)dSC8Out).NativePointer = dSC8Out_;
                __result__.CheckError();
            }
        }

        [DllImport("dsound.dll", EntryPoint = "DirectSoundCaptureCreate8", CallingConvention = CallingConvention.StdCall)]
        private unsafe static extern int DirectSoundCaptureCreate8_(void* arg0,void* arg1,void* arg2);

        
        /// <summary>	
        /// The DirectSoundEnumerate function enumerates the DirectSound drivers installed in the system.	
        /// </summary>	
        /// <param name="dSEnumCallbackRef"><dd> Address of the DSEnumCallback function that will be called for each device installed in the system. </dd></param>	
        /// <param name="contextRef"><dd> Address of the user-defined context passed to the enumeration callback function every time that function is called. </dd></param>	
        /// <returns><p>If the function succeeds, it returns DS_OK. If it fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DirectSoundEnumerateA']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.directsoundenumerate</msdn-id>	
        /// <unmanaged>HRESULT DirectSoundEnumerateA([In] __function__stdcall* pDSEnumCallback,[In, Optional] void* pContext)</unmanaged>	
        /// <unmanaged-short>DirectSoundEnumerateA</unmanaged-short>	
        public static void EnumerateA(SharpDX.FunctionCallback dSEnumCallbackRef, System.IntPtr contextRef) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				DirectSoundEnumerateA_(dSEnumCallbackRef, (void*)contextRef);		
                __result__.CheckError();
            }
        }

        [DllImport("dsound.dll", EntryPoint = "DirectSoundEnumerateA", CallingConvention = CallingConvention.StdCall)]
        private unsafe static extern int DirectSoundEnumerateA_(void* arg0,void* arg1);

        
        /// <summary>	
        /// The DirectSoundEnumerate function enumerates the DirectSound drivers installed in the system.	
        /// </summary>	
        /// <param name="dSEnumCallbackRef"><dd> Address of the DSEnumCallback function that will be called for each device installed in the system. </dd></param>	
        /// <param name="contextRef"><dd> Address of the user-defined context passed to the enumeration callback function every time that function is called. </dd></param>	
        /// <returns><p>If the function succeeds, it returns DS_OK. If it fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DirectSoundEnumerateW']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.directsoundenumerate</msdn-id>	
        /// <unmanaged>HRESULT DirectSoundEnumerateW([In] __function__stdcall* pDSEnumCallback,[In, Optional] void* pContext)</unmanaged>	
        /// <unmanaged-short>DirectSoundEnumerateW</unmanaged-short>	
        public static void EnumerateW(SharpDX.FunctionCallback dSEnumCallbackRef, System.IntPtr contextRef) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				DirectSoundEnumerateW_(dSEnumCallbackRef, (void*)contextRef);		
                __result__.CheckError();
            }
        }

        [DllImport("dsound.dll", EntryPoint = "DirectSoundEnumerateW", CallingConvention = CallingConvention.StdCall)]
        private unsafe static extern int DirectSoundEnumerateW_(void* arg0,void* arg1);

        
        /// <summary>	
        /// The DirectSoundCaptureCreate8 function creates and initializes an object that supports the IDirectSoundCapture8 interface. Although the older<strong>DirectSoundCaptureCreate</strong>function can also be used to obtain theIDirectSoundCapture8interface, the object created by that function cannot be used to create capture buffers that support theIDirectSoundCaptureBuffer8interface.	
        /// </summary>	
        /// <param name="cGuidDeviceRef">No documentation.</param>	
        /// <param name="dSCOut">No documentation.</param>	
        /// <param name="unkOuterRef">No documentation.</param>	
        /// <returns><p>If the function succeeds, it returns DS_OK. If it fails, the return value may be one of the following values.</p> <table> <tr><th>Return Code</th></tr> <tr><td>DSERR_ALLOCATED</td></tr> <tr><td>DSERR_INVALIDPARAM</td></tr> <tr><td>DSERR_NOAGGREGATION</td></tr> <tr><td>DSERR_OUTOFMEMORY</td></tr> </table></returns>	
        /// <remarks>	
        /// <p>On sound cards that do not support full duplex, this method will fail and return DSERR_ALLOCATED.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DirectSoundCaptureCreate']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.directsoundcapturecreate8</msdn-id>	
        /// <unmanaged>HRESULT DirectSoundCaptureCreate([In, Optional] const GUID* pcGuidDevice,[Out] IDirectSoundCapture** ppDSC,[In] IUnknown* pUnkOuter)</unmanaged>	
        /// <unmanaged-short>DirectSoundCaptureCreate</unmanaged-short>	
        public static void CaptureCreate(System.Guid? cGuidDeviceRef, out SharpDX.DirectSound.DirectSoundCapture dSCOut, SharpDX.ComObject unkOuterRef) {
            unsafe {
                System.Guid cGuidDeviceRef_;
                if (cGuidDeviceRef.HasValue)
                    cGuidDeviceRef_ = cGuidDeviceRef.Value;				
                IntPtr dSCOut_ = IntPtr.Zero;
                SharpDX.Result __result__;
                __result__= 
				DirectSoundCaptureCreate_((cGuidDeviceRef.HasValue)?&cGuidDeviceRef_:(void*)IntPtr.Zero, &dSCOut_, (void*)((unkOuterRef == null)?IntPtr.Zero:unkOuterRef.NativePointer));		
                dSCOut= (dSCOut_ == IntPtr.Zero)?null:new SharpDX.DirectSound.DirectSoundCapture(dSCOut_);	
                __result__.CheckError();
            }
        }

        [DllImport("dsound.dll", EntryPoint = "DirectSoundCaptureCreate", CallingConvention = CallingConvention.StdCall)]
        private unsafe static extern int DirectSoundCaptureCreate_(void* arg0,void* arg1,void* arg2);

        
        /// <summary>	
        /// <p>The <strong>DirectSoundFullDuplexCreate</strong> function is documented under a different name. For complete documentation of this function, see DirectSoundFullDuplexCreate8. </p>	
        /// </summary>	
        /// <param name="cGuidCaptureDeviceRef">No documentation.</param>	
        /// <param name="cGuidRenderDeviceRef">No documentation.</param>	
        /// <param name="cDSCBufferDescRef">No documentation.</param>	
        /// <param name="cDSBufferDescRef">No documentation.</param>	
        /// <param name="hWnd">No documentation.</param>	
        /// <param name="dwLevel">No documentation.</param>	
        /// <param name="dSFDOut">No documentation.</param>	
        /// <param name="dSCBuffer8Out">No documentation.</param>	
        /// <param name="dSBuffer8Out">No documentation.</param>	
        /// <param name="unkOuterRef">No documentation.</param>	
        /// <returns><p>If this function succeeds, it returns <strong><see cref="SharpDX.Result.Ok"/></strong>. Otherwise, it returns an <strong><see cref="SharpDX.Result"/></strong> error code.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DirectSoundFullDuplexCreate']/*"/>	
        /// <msdn-id>bb432248</msdn-id>	
        /// <unmanaged>HRESULT DirectSoundFullDuplexCreate([In, Optional] const GUID* pcGuidCaptureDevice,[In, Optional] const GUID* pcGuidRenderDevice,[In] const DSCBUFFERDESC* pcDSCBufferDesc,[In] const DSBUFFERDESC* pcDSBufferDesc,[In] HWND hWnd,[In] unsigned int dwLevel,[Out, Fast] IDirectSoundFullDuplex** ppDSFD,[Out] IDirectSoundCaptureBuffer8** ppDSCBuffer8,[Out] IDirectSoundBuffer8** ppDSBuffer8,[In] IUnknown* pUnkOuter)</unmanaged>	
        /// <unmanaged-short>DirectSoundFullDuplexCreate</unmanaged-short>	
        public static void FullDuplexCreate(System.Guid? cGuidCaptureDeviceRef, System.Guid? cGuidRenderDeviceRef, SharpDX.DirectSound.CaptureBufferDescription cDSCBufferDescRef, SharpDX.DirectSound.SoundBufferDescription cDSBufferDescRef, System.IntPtr hWnd, int dwLevel, SharpDX.DirectSound.FullDuplex dSFDOut, out SharpDX.DirectSound.CaptureBuffer dSCBuffer8Out, out SharpDX.DirectSound.SecondarySoundBuffer dSBuffer8Out, SharpDX.ComObject unkOuterRef) {
            unsafe {
                System.Guid cGuidCaptureDeviceRef_;
                if (cGuidCaptureDeviceRef.HasValue)
                    cGuidCaptureDeviceRef_ = cGuidCaptureDeviceRef.Value;				
                System.Guid cGuidRenderDeviceRef_;
                if (cGuidRenderDeviceRef.HasValue)
                    cGuidRenderDeviceRef_ = cGuidRenderDeviceRef.Value;				
                var cDSCBufferDescRef_ = SharpDX.DirectSound.CaptureBufferDescription.__NewNative();
                cDSCBufferDescRef.__MarshalTo(ref cDSCBufferDescRef_);
                var cDSBufferDescRef_ = SharpDX.DirectSound.SoundBufferDescription.__NewNative();
                cDSBufferDescRef.__MarshalTo(ref cDSBufferDescRef_);
                IntPtr dSFDOut_ = IntPtr.Zero;
                IntPtr dSCBuffer8Out_ = IntPtr.Zero;
                IntPtr dSBuffer8Out_ = IntPtr.Zero;
                SharpDX.Result __result__;
                __result__= 
				DirectSoundFullDuplexCreate_((cGuidCaptureDeviceRef.HasValue)?&cGuidCaptureDeviceRef_:(void*)IntPtr.Zero, (cGuidRenderDeviceRef.HasValue)?&cGuidRenderDeviceRef_:(void*)IntPtr.Zero, &cDSCBufferDescRef_, &cDSBufferDescRef_, (void*)hWnd, dwLevel, &dSFDOut_, &dSCBuffer8Out_, &dSBuffer8Out_, (void*)((unkOuterRef == null)?IntPtr.Zero:unkOuterRef.NativePointer));		
                cDSCBufferDescRef.__MarshalFree(ref cDSCBufferDescRef_);
                cDSBufferDescRef.__MarshalFree(ref cDSBufferDescRef_);
                ((SharpDX.DirectSound.FullDuplex)dSFDOut).NativePointer = dSFDOut_;
                dSCBuffer8Out= (dSCBuffer8Out_ == IntPtr.Zero)?null:new SharpDX.DirectSound.CaptureBuffer(dSCBuffer8Out_);	
                dSBuffer8Out= (dSBuffer8Out_ == IntPtr.Zero)?null:new SharpDX.DirectSound.SecondarySoundBuffer(dSBuffer8Out_);	
                __result__.CheckError();
            }
        }

        [DllImport("dsound.dll", EntryPoint = "DirectSoundFullDuplexCreate", CallingConvention = CallingConvention.StdCall)]
        private unsafe static extern int DirectSoundFullDuplexCreate_(void* arg0,void* arg1,void* arg2,void* arg3,void* arg4,int arg5,void* arg6,void* arg7,void* arg8,void* arg9);

        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <param name="cGuidDeviceRef">No documentation.</param>	
        /// <param name="dSOut">No documentation.</param>	
        /// <param name="unkOuterRef">No documentation.</param>	
        /// <returns>No documentation.</returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DirectSoundCreate']/*"/>	
        /// <unmanaged>HRESULT DirectSoundCreate([In, Optional] const GUID* pcGuidDevice,[Out] IDirectSound** ppDS,[In] IUnknown* pUnkOuter)</unmanaged>	
        /// <unmanaged-short>DirectSoundCreate</unmanaged-short>	
        public static void Create(System.Guid? cGuidDeviceRef, out SharpDX.DirectSound.DirectSoundBase dSOut, SharpDX.ComObject unkOuterRef) {
            unsafe {
                System.Guid cGuidDeviceRef_;
                if (cGuidDeviceRef.HasValue)
                    cGuidDeviceRef_ = cGuidDeviceRef.Value;				
                IntPtr dSOut_ = IntPtr.Zero;
                SharpDX.Result __result__;
                __result__= 
				DirectSoundCreate_((cGuidDeviceRef.HasValue)?&cGuidDeviceRef_:(void*)IntPtr.Zero, &dSOut_, (void*)((unkOuterRef == null)?IntPtr.Zero:unkOuterRef.NativePointer));		
                dSOut= (dSOut_ == IntPtr.Zero)?null:new SharpDX.DirectSound.DirectSoundBase(dSOut_);	
                __result__.CheckError();
            }
        }

        [DllImport("dsound.dll", EntryPoint = "DirectSoundCreate", CallingConvention = CallingConvention.StdCall)]
        private unsafe static extern int DirectSoundCreate_(void* arg0,void* arg1,void* arg2);

        
        /// <summary>	
        /// The GetDeviceID function retrieves the unique device identifier of the default playback and capture devices selected by the user in Control Panel.	
        /// </summary>	
        /// <param name="guidSrcRef"><dd> Address of a variable that specifies a valid device identifier, or the address of one of the following predefined variables.<table> <tr><th>Value</th><th>Description</th></tr> <tr><td>DSDEVID_DefaultPlayback</td><td>System-wide default audio playback device.</td></tr> <tr><td>DSDEVID_DefaultCapture</td><td>System-wide default audio capture device.</td></tr> <tr><td>DSDEVID_DefaultVoicePlayback</td><td>Default voice playback device.</td></tr> <tr><td>DSDEVID_DefaultVoiceCapture</td><td>Default voice capture device.</td></tr> </table> </dd></param>	
        /// <param name="guidDestRef"><dd> Address of a variable that receives the unique identifier of the device. </dd></param>	
        /// <returns><p>If the function succeeds, it returns DS_OK. If it fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>If pGuidSrc points to a valid device identifier, the same value is returned in pGuidDest. If pGuidSrc is one of the listed constants, pGuidDest returns the address of the corresponding device <see cref="System.Guid"/>.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='GetDeviceID']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.getdeviceid</msdn-id>	
        /// <unmanaged>HRESULT GetDeviceID([In, Optional] const GUID* pGuidSrc,[Out] GUID* pGuidDest)</unmanaged>	
        /// <unmanaged-short>GetDeviceID</unmanaged-short>	
        public static void GetDeviceID(System.Guid? guidSrcRef, out System.Guid guidDestRef) {
            unsafe {
                System.Guid guidSrcRef_;
                if (guidSrcRef.HasValue)
                    guidSrcRef_ = guidSrcRef.Value;				
                guidDestRef = new System.Guid();
                SharpDX.Result __result__;
                fixed (void* guidDestRef_ = &guidDestRef)
                    __result__= 
    				GetDeviceID_((guidSrcRef.HasValue)?&guidSrcRef_:(void*)IntPtr.Zero, guidDestRef_);		
                __result__.CheckError();
            }
        }

        [DllImport("dsound.dll", EntryPoint = "GetDeviceID", CallingConvention = CallingConvention.StdCall)]
        private unsafe static extern int GetDeviceID_(void* arg0,void* arg1);

        
        /// <summary>	
        /// The DirectSoundCaptureEnumerate function enumerates the DirectSoundCapture objects installed in the system.	
        /// </summary>	
        /// <param name="dSEnumCallbackRef"><dd> Address of the DSEnumCallback function that will be called for each DirectSoundCapture object installed in the system. </dd></param>	
        /// <param name="contextRef"><dd> Address of the user-defined context passed to the enumeration callback function every time that function is called. </dd></param>	
        /// <returns><p>If the function succeeds, it returns DS_OK. If it fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DirectSoundCaptureEnumerateA']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.directsoundcaptureenumerate</msdn-id>	
        /// <unmanaged>HRESULT DirectSoundCaptureEnumerateA([In] __function__stdcall* pDSEnumCallback,[In, Optional] void* pContext)</unmanaged>	
        /// <unmanaged-short>DirectSoundCaptureEnumerateA</unmanaged-short>	
        public static void CaptureEnumerateA(SharpDX.FunctionCallback dSEnumCallbackRef, System.IntPtr contextRef) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				DirectSoundCaptureEnumerateA_(dSEnumCallbackRef, (void*)contextRef);		
                __result__.CheckError();
            }
        }

        [DllImport("dsound.dll", EntryPoint = "DirectSoundCaptureEnumerateA", CallingConvention = CallingConvention.StdCall)]
        private unsafe static extern int DirectSoundCaptureEnumerateA_(void* arg0,void* arg1);

        
        /// <summary>	
        /// The DirectSoundCaptureEnumerate function enumerates the DirectSoundCapture objects installed in the system.	
        /// </summary>	
        /// <param name="dSEnumCallbackRef"><dd> Address of the DSEnumCallback function that will be called for each DirectSoundCapture object installed in the system. </dd></param>	
        /// <param name="contextRef"><dd> Address of the user-defined context passed to the enumeration callback function every time that function is called. </dd></param>	
        /// <returns><p>If the function succeeds, it returns DS_OK. If it fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DirectSoundCaptureEnumerateW']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.directsoundcaptureenumerate</msdn-id>	
        /// <unmanaged>HRESULT DirectSoundCaptureEnumerateW([In] __function__stdcall* pDSEnumCallback,[In, Optional] void* pContext)</unmanaged>	
        /// <unmanaged-short>DirectSoundCaptureEnumerateW</unmanaged-short>	
        public static void CaptureEnumerateW(SharpDX.FunctionCallback dSEnumCallbackRef, System.IntPtr contextRef) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				DirectSoundCaptureEnumerateW_(dSEnumCallbackRef, (void*)contextRef);		
                __result__.CheckError();
            }
        }

        [DllImport("dsound.dll", EntryPoint = "DirectSoundCaptureEnumerateW", CallingConvention = CallingConvention.StdCall)]
        private unsafe static extern int DirectSoundCaptureEnumerateW_(void* arg0,void* arg1);

        
        /// <summary>	
        /// The DirectSoundCreate8 function creates and initializes an object that supports theIDirectSound8interface.	
        /// </summary>	
        /// <param name="cGuidDeviceRef">No documentation.</param>	
        /// <param name="dS8Out">No documentation.</param>	
        /// <param name="unkOuterRef">No documentation.</param>	
        /// <returns><p>If the function succeeds, it returns DS_OK. If it fails, the return value may be one of the following.</p> <table> <tr><th>Return Code</th></tr> <tr><td>DSERR_ALLOCATED</td></tr> <tr><td>DSERR_INVALIDPARAM</td></tr> <tr><td>DSERR_NOAGGREGATION</td></tr> <tr><td>DSERR_NODRIVER</td></tr> <tr><td>DSERR_OUTOFMEMORY</td></tr> </table></returns>	
        /// <remarks>	
        /// <p>The application must call the IDirectSound8::SetCooperativeLevel method immediately after creating a device object.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DirectSoundCreate8']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.directsoundcreate8</msdn-id>	
        /// <unmanaged>HRESULT DirectSoundCreate8([In, Optional] const GUID* pcGuidDevice,[Out, Fast] IDirectSound8** ppDS8,[In] IUnknown* pUnkOuter)</unmanaged>	
        /// <unmanaged-short>DirectSoundCreate8</unmanaged-short>	
        public static void Create8(System.Guid? cGuidDeviceRef, SharpDX.DirectSound.DirectSound dS8Out, SharpDX.ComObject unkOuterRef) {
            unsafe {
                System.Guid cGuidDeviceRef_;
                if (cGuidDeviceRef.HasValue)
                    cGuidDeviceRef_ = cGuidDeviceRef.Value;				
                IntPtr dS8Out_ = IntPtr.Zero;
                SharpDX.Result __result__;
                __result__= 
				DirectSoundCreate8_((cGuidDeviceRef.HasValue)?&cGuidDeviceRef_:(void*)IntPtr.Zero, &dS8Out_, (void*)((unkOuterRef == null)?IntPtr.Zero:unkOuterRef.NativePointer));		
                ((SharpDX.DirectSound.DirectSound)dS8Out).NativePointer = dS8Out_;
                __result__.CheckError();
            }
        }

        [DllImport("dsound.dll", EntryPoint = "DirectSoundCreate8", CallingConvention = CallingConvention.StdCall)]
        private unsafe static extern int DirectSoundCreate8_(void* arg0,void* arg1,void* arg2);

    }
        /// <summary>	
        /// Functions	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='SharpDX.DirectSound.SoundEffectGuid']/*"/>	
    static  partial class SoundEffectGuid {   
        
        /// <summary>Constant StandardFlanger.</summary>
        /// <unmanaged>GUID_DSFX_STANDARD_FLANGER</unmanaged>
        public static readonly System.Guid StandardFlanger = new System.Guid("efca3d92-dfd8-4672-a603-7420894bad98");
        
        /// <summary>Constant StandardChorus.</summary>
        /// <unmanaged>GUID_DSFX_STANDARD_CHORUS</unmanaged>
        public static readonly System.Guid StandardChorus = new System.Guid("efe6629c-81f7-4281-bd91-c9d604a95af6");
        
        /// <summary>Constant StandardCompressor.</summary>
        /// <unmanaged>GUID_DSFX_STANDARD_COMPRESSOR</unmanaged>
        public static readonly System.Guid StandardCompressor = new System.Guid("ef011f79-4000-406d-87af-bffb3fc39d57");
        
        /// <summary>Constant StandardI3DL2REVERB.</summary>
        /// <unmanaged>GUID_DSFX_STANDARD_I3DL2REVERB</unmanaged>
        public static readonly System.Guid StandardI3DL2REVERB = new System.Guid("ef985e71-d5c7-42d4-ba4d-2d073e2e96f4");
        
        /// <summary>Constant WavesReverb.</summary>
        /// <unmanaged>GUID_DSFX_WAVES_REVERB</unmanaged>
        public static readonly System.Guid WavesReverb = new System.Guid("87fc0268-9a55-4360-95aa-004a1d9de26c");
        
        /// <summary>Constant StandardGargle.</summary>
        /// <unmanaged>GUID_DSFX_STANDARD_GARGLE</unmanaged>
        public static readonly System.Guid StandardGargle = new System.Guid("dafd8210-5711-4b91-9fe3-f75b7ae279bf");
        
        /// <summary>Constant StandardEcho.</summary>
        /// <unmanaged>GUID_DSFX_STANDARD_ECHO</unmanaged>
        public static readonly System.Guid StandardEcho = new System.Guid("ef3e932c-d40b-4f51-8ccf-3f98f1b29d5d");
        
        /// <summary>Constant StandardParameq.</summary>
        /// <unmanaged>GUID_DSFX_STANDARD_PARAMEQ</unmanaged>
        public static readonly System.Guid StandardParameq = new System.Guid("120ced89-3bf4-4173-a132-3cb406cf3231");
        
        /// <summary>Constant StandardDistortion.</summary>
        /// <unmanaged>GUID_DSFX_STANDARD_DISTORTION</unmanaged>
        public static readonly System.Guid StandardDistortion = new System.Guid("ef114c90-cd1d-484e-96e5-09cfaf912a21");
    }
        /// <summary>	
        /// Functions	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='SharpDX.DirectSound.Volume']/*"/>	
    public static  partial class Volume {   
        
        /// <summary>Constant Minimum.</summary>
        /// <unmanaged>DSBVOLUME_MIN</unmanaged>
        public const int Minimum = -0x000002710;
        
        /// <summary>Constant Maximum.</summary>
        /// <unmanaged>DSBVOLUME_MAX</unmanaged>
        public const int Maximum = 0;
    }
}
